home *** CD-ROM | disk | FTP | other *** search
/ Scene Storm / Scene Storm - Volume 1.iso / coding / c / pdc / sample / pi.c < prev    next >
C/C++ Source or Header  |  1990-04-06  |  713b  |  47 lines

  1.  
  2. extern double   sqrt(), pow();
  3.  
  4. double          a, f, n, r, y;
  5.  
  6. double
  7. g()
  8. {
  9.     r = sqrt(2.0);
  10.     y = r - 1.0;
  11.     a = 6.0 - 4.0 * r;
  12.     n = 3.0;
  13.     return (1.0 / a);
  14. }
  15.  
  16. double
  17. i()
  18. {
  19.     double          t1, t2, t3;
  20.  
  21.     f = sqrt(sqrt(1.0 - y * y * y * y));
  22.     y = (1.0 - f) / (1.0 + f);
  23.  
  24.     t1 = 1.0 + y;
  25.     t2 = t1 * t1 * t1 * t1;
  26.  
  27.     a = t2 * a - pow(2.0, n) * y * (1.0 + y + y * y);
  28.     n = n + 2.0;
  29.     return (1.0 / a);
  30. }
  31.  
  32. main()
  33. {
  34.     double          pi;
  35.  
  36.     pi = g();
  37.     printf("pi = %20.16e\n", pi);
  38.     pi = i();
  39.     printf("pi = %20.16e\n", pi);
  40.     pi = i();
  41.     printf("pi = %20.16e\n", pi);
  42.     pi = i();
  43.     printf("pi = %20.16e\n", pi);
  44.     pi = i();
  45.     printf("pi = %20.16e\n", pi);
  46. }
  47.